Linux security

Objetivo

Este treinamento é destinado a desenvolvedores de software que desejam aprender conceitos de segurança aplicados a sistemas com o kernel Linux.

Embora o foco principal seja Linux embarcado, os conceitos e técnicas abordadas neste treinamento são aplicáveis a diferentes plataformas, incluindo sistemas bare-metal, dispositivos baseados em RTOS, Android, e outros.

Os participantes explorarão uma ampla gama de tópicos, incluindo fundamentos de segurança, práticas de programação segura, conceitos de criptografia, encriptação de dados, boot seguro, mecanismos de controle de acesso, sandboxing e isolamento, Trusted Execution Environment (TEE), segurança de rede, estratégias de atualização de firmware (Over-the-Air updates), segurança de hardware e uma visão geral das certificações e normas regulatórias de segurança.


Conteúdo programático

  • Introdução aos conceitos de segurança: uma visão geral dos conceitos fundamentais de segurança, incluindo confidencialidade, integridade, autenticidade, privacidade e não-repúdio. A sessão apresenta também noções de gerenciamento de riscos, categorias comuns de ameaças e princípios de design seguro (privilégio mínimo, defesa em profundidade, etc). Serão explorados os tipos de atacantes (script kiddies, hacktivistas, agentes estatais, etc), modelos de ameaças de hardware e software, e vetores de ataque comuns em sistemas embarcados. Os participantes também aprenderão técnicas de modelagem de ameaças como STRIDE e DREAD, com exemplos práticos aplicados a dispositivos reais.
  • Programação segura I - explorando vulnerabilidades: este módulo ensina como atacantes exploram vulnerabilidades de software em sistemas embarcados baseados em C/C++. Tópicos incluem estouro de buffer, uso após liberação (use-after-free), vulnerabilidades de formatação de strings e outros bugs de corrupção de memória. Os participantes explorarão shellcode, noções básicas de desenvolvimento de exploits, retorno à libc e return-oriented programming (ROP). Demonstrações práticas com GDB e ferramentas de testes de penetração como Metasploit e radare2 irão reforçar como essas falhas podem ser exploradas.
  • Programação segura II - técnicas de mitigação: aborda mitigações de segurança em tempo de compilação e em tempo de execução para proteção contra vulnerabilidades comuns. Inclui ASLR, stack canaries, DEP/NX, RELRO, FORTIFY, proteção contra estouro de pilha (SSP) e outras técnicas de mitigação. Discute também o uso de sanitizers como AddressSanitizer e Electric Fence para detecção de bugs em tempo de execução. A sessão inclui uma visão geral das opções de hardening do kernel Linux, normas de codificação segura do CERT C, MISRA C e ISO/IEC TS 17961, além de ferramentas de análise estática, fuzzing e o papel de linguagens seguras como Rust e Ada no desenvolvimento de software para sistemas embarcados.
  • Conceitos de criptografia: introdução prática aos fundamentos da criptografia, incluindo criptografia simétrica (AES, ChaCha20) e assimétrica (RSA, ECC). Aborda infraestrutura de chave pública (PKI), certificados X.509, assinaturas digitais, funções de hash e geração segura de números randômicos. A sessão também explora armazenamento e gerenciamento de chaves, com foco no subsistema Trusted Keys do kernel Linux, keyrings e integração com hardware (CAAM, TPM, Secure Element, etc).
  • Armazenamento seguro de dados: técnicas para proteção de dados em sistemas embarcados. Cobre criptografia baseada em arquivos (eCryptFS, fscrypt, etc) e criptografia de partições (dm-crypt, LUKS, etc). Discute boas práticas para armazenar credenciais, segredos e logs, como gerenciar chaves de criptografia com segurança e como integrar esses mecanismos no desenvolvimento de sistemas embarcados.
  • Boot seguro: compreensão do processo de boot seguro, incluindo verificação de integridade no boot e cadeia de confiança (chain-of-trust) desde o código ROM do SoC até o espaço de usuário de um sistema Linux. Tópicos incluem root-of-trust no nível do SoC, provisionamento de chaves, assinatura de bootloaders e kernel (U-Boot com imagens FIT), e proteção do sistema de arquivos usando dm-verity, IMA/EVM e fs-verity. Também discute implementações específicas de plataformas de hardware baseadas em processadores da NXP e da TI.
  • Mecanismos de controle de acesso: análise aprofundada do controle de acesso no Linux, incluindo Discretionary Access Control (DAC), permissões POSIX, gerenciamento de senhas e credenciais, Linux capabilities, etc. Aborda Access Control Lists (ACLs) e atributos estendidos, seguido de uma visão geral dos Módulos de Segurança do Linux (LSMs), como SELinux, AppArmor e SMACK. Também cobre auditoria e logs via auditd e journald.
  • Sandboxing e isolamento: técnicas para isolar aplicações e reduzir a superfície de ataque. Cobre chroot, seccomp-bpf, namespaces (PID, rede, pontos de montagem, etc). Introduz conteinerização com LXC, Docker e systemd-nspawn, além de técnicas de sandboxing para serviços do systemd. Finaliza com uma visão geral da virtualização de hardware usando QEMU/KVM em sistemas embarcados.
  • Trusted Execution Environment (TEE): cobre a necessidade de TEEs em sistemas embarcados e seus casos de uso típicos. Os participantes aprenderão sobre implementações populares como OP-TEE, Google Trusty e Keystone (RISC-V). Exploração aprofundada do OP-TEE e da arquitetura ARM TrustZone, separação entre o mundo seguro e mundo normal, mecanismos de comunicação e etapas para portar e usar o OP-TEE em plataformas com Linux embarcado.
  • Segurança de rede: foco na proteção de dados em trânsito usando SSL/TLS, HTTPS, IPsec e VPNs. Discussão sobre ataques de rede comuns como MitM, DoS e varredura de portas, e como mitigá-los. Aprenda a proteger serviços de rede em sistemas embarcados (sshd, httpd, brokers MQTT, etc), configurar firewalls com iptables, nftables, ufw e firewalld, e integrar sistemas de detecção de intrusão como Snort ou Suricata.
  • Atualização de firmware: explora mecanismos seguros de atualização de firmware (offline ou OTA), desde abordagens baseadas em imagem completa até baseadas em deltas. Aprenda sobre verificações de autenticidade e integridade das imagens de atualização e proteção contra rollback. Visão geral de frameworks open source como Mender, SWUpdate, RAUC, OSTree e Hawkbit, além de boas práticas para rastreamento de CVEs e aplicação de patches de segurança.
  • Segurança de hardware: esta sessão explora a dimensão física da segurança em sistemas embarcados. Tópicos incluem proteção contra violação física (fuses, anti-tamper, etc), resistência à engenharia reversa e o papel de TPMs e Secure Elements. Aprenda a identificar e restringir interfaces de depuração (JTAG, UART) e entenda as ameaças representadas por ataques de side-channel (timing, power analysis, etc) e suas técnicas de mitigação.
  • Encerramento: fechamento com uma visão geral das certificações de segurança e normas regulatórias relevantes, como o projeto OWASP Embedded Application Security, PCI DSS, FIPS 140-3, IEC 62443, ISO/SAE 21434 e muitas outras, incluindo regulamentações emergentes como o Cyber Resilience Act (CRA) da União Europeia. A sessão termina com perguntas e respostas, resumo do conteúdo e uma lista de livros e recursos para continuar estudando.

Informações adicionais

Estudantes, engenheiros, desenvolvedores e líderes de equipes de desenvolvimento de software para sistemas embarcados.

Experiência no desenvolvimento de software para sistemas embarcados (bare-metal, RTOS, Linux embarcado), familiaridade com o ambiente de shell do Linux, compreensão da arquitetura de sistemas Linux (espaço de usuário vs espaço de kernel), sólido conhecimento das linguagens de programação C e C++, familiaridade com compilação cruzada e sistemas de build (GCC, Make, Buildroot, Yocto Project, etc).

O material de estudo é composto pelos slides das apresentações, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicionais. Todo o material será fornecido de forma eletrônica no início do treinamento.

Os exercícios do treinamento são realizados utilizando o SoM Verdin iMX8MM da Toradex ou em um ambiente emulado com o QEMU. Quando utilizado o kit de desenvolvimento, ele é emprestado aos participantes para a realização das atividades práticas durante o treinamento. Se necessário, e dependendo dos requisitos da empresa contratante, o treinamento também pode ser adaptado para rodar em outra plataforma de hardware.

O treinamento pode ser apresentado nos seguintes idiomas: Português brasileiro e Inglês.

Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa. Nos treinamentos in-company, a empresa contratante é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, projetor e máquinas de desenvolvimento para os alunos. Esse modelo traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor. Caso a empresa contratante tenha alguma necessidade específica, podemos estudar a criação de um conteúdo programático especial, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver algum conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato .

Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã. Caso tenha interesse em participar de um treinamento mas não exista uma turma disponível, envie uma mensagem pela página de contato que avisamos assim que uma nova turma for aberta.

Este treinamento pode ser realizado de forma online. Os treinamentos online são apresentados ao vivo em uma plataforma de reunião virtual como o Google Meet ou o Zoom. Na modalidade online, os alunos utilizam o emulador (QEMU) para realizar as atividades práticas.


Galeria de fotos

Algumas fotos dos treinamentos já realizados:

Depoimentos de clientes

Depoimentos de empresas e alunos que já participaram dos treinamentos da Embedded Labworks

highlight shape

A Samsung é uma empresa líder no mercado de alta tecnologia e mídias digitais

“Um dos melhores treinamentos que já recebi. O instrutor tem total domínio do conteúdo e uma excelente didática”

Adriano Saviolli, Samsung

A LG Electronics é uma gigante multinacional sul-coreana e uma das maiores companhias de eletroeletrônicos do Brasil

“Costumo ser muito crítico e faz tempo que não avalio um treinamento com notas máximas em todos os quesitos. Parabéns pelo treinamento!”

Vitor de Paula, LG Electronics

AOC International é a marca da TPV Technology Limited, uma fabricante de monitores LCD e LED para computadores e televisores

“Treinamento diferenciado e sem dúvida muito mais valioso que muitas graduações que temos hoje do assunto”

Lucas Tadeu Portela, AOC International

O Centro Tecnológico do Exército (CTEx) é uma organização militar subordinada ao departamento de ciência e tecnologia do governo brasileiro

“Didático e dinâmico, o treinamento atendeu plenamente a todos os objetivos propostos, além de motivar o aprofundamento do conhecimento em Linux. Recomendo!”

José Antonio de Sousa Fernandes, CTEx

O Inatel (Instituto Nacional de Telecomunicações) é um centro de excelência em ensino e pesquisa na área de engenharia

“Treinamento de alta qualidade, com muito conteúdo útil e altamente estruturado”

Luis Gustavo, Inatel

A Intelbrás é uma empresa 100% brasileira e que atua nas áreas de segurança, telecom e redes, sendo líder em vários segmentos nos quais atua

“Um excelente profissional aplicando um excelente treinamento prático e com rico material de apoio. Obrigado pela ampliação de conhecimentos!”

Paulo Morgado, Intelbrás

Ainda tem dúvidas?

Envie um e-mail para info@e-labworks.com ou deixe uma mensagem preenchendo o formulário abaixo:

Newsletter

Inscreva-se na newsletter da Embedded Labworks para receber notícias sobre treinamentos, serviços e novidades na área de sistemas embarcados.

highlight shape